package com.alks.function.mapper.chengKong;

import com.alks.entity.data.entity.*;
import com.alks.function.data.dto.chengKong.assort.*;
import com.alks.function.data.request.chengKong.*;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.Mapper;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Mapper
public interface DevelopmentUsageMapper {

    /**
     * 查询型体状态
     * @param styleNo
     * @return
     */
    YfStyle getStyle(String styleNo);

    /**
     * 开发型体用量建档
     * @param yfBomHeadNew2
     * @return
     */
    int addStyleUsage(YfBomHeadNew2 yfBomHeadNew2);

    /**
     * 删除用量明细
     * @param styleNo
     * @param styleColor
     * @return
     */
    int delStyleUsageDetail(@Param("styleNo") String styleNo, @Param("styleColor") String styleColor);
    int delStyleUsageDetail2(@Param("styleNo") String styleNo, @Param("styleColor") String styleColor,@Param("orderId") String orderId);

    /**
     * 批量插入用量明细
     * @param updatedList
     * @return
     */
    int addStyleUsageDetail(List<YfBomPartNew2> updatedList);

    /**
     * 更新检核状态
     * @param userName
     * @param now
     * @param cfmFlag
     * @param styleNo
     * @param styleColor
     */
    int updateCheckOutFlag(@Param("userName") String userName, @Param("now") LocalDateTime now, @Param("cfmFlag") String cfmFlag,
                            @Param("styleNo") String styleNo, @Param("styleColor") String styleColor);
    int updateCheckOutFlag2(@Param("userName") String userName, @Param("now") LocalDateTime now, @Param("cfmFlag") String cfmFlag,
                           @Param("styleNo") String styleNo, @Param("styleColor") String styleColor,@Param("orderId") String orderId);
    /**
     * 删除日志信息
     * @param styleNo
     * @param styleColor
     * @return
     */
    int delYfBomPartNew2Bak(@Param("styleNo") String styleNo, @Param("styleColor") String styleColor,@Param("orderId") String orderId);

    /**
     * 查询用量明细
     * @param styleNo
     * @param styleColor
     * @return
     */
    List<YfBomPartNew2> getStyleColorMaterialList(@Param("styleNo") String styleNo, @Param("styleColor") String styleColor,String orderId);

    /**
     * 插入用量明细日志
     * @param styleColorMaterialList
     * @return
     */
    int addStyleUsageDetailBak(List<YfBomPartNew2> styleColorMaterialList);

    /**
     * 插入用量明细日志变更记录
     * @param changes
     * @return
     */
    int addYfBomChangeList(List<YfBomChange> changes);

    /**
     * 查询用量明细日志
     * @param styleNo
     * @param styleColor
     * @return
     */
    List<YfBomPartNew2> getStyleColorMaterialList2(String styleNo, String styleColor,String orderId);

    /**
     * 查询注意事项建档
     * @param styleNo
     * @param styleColor
     * @return
     */
    List<YfBomMemoNew2Dto> getPrecautionsForFiling(String styleNo, String styleColor,String orderId);

    /**
     * 新增注意事项建档
     * @param yfBomMemoNew2List
     * @return
     */
    int addPrecautionsForFiling(List<YfBomMemoNew2> yfBomMemoNew2List);

    /**
     * 删除注意事项建档
     * @param styleNo
     * @param styleColor
     * @return
     */
    int delPrecautionsForFiling(String styleNo, String styleColor,String orderId);

    /**
     * 打勾删除记录
     * @param styleNo
     * @param styleColor
     * @param seqNoList
     * @return
     */
    int deleteTickRecords(String styleNo, String styleColor,String orderId, List<BigDecimal> seqNoList);

    /**
     * 删除型体
     * @param styleNo
     * @param styleColor
     * @return
     */
    int delTypeFiling(String styleNo, String styleColor,String orderId);

    /**
     * 删除全码明细
     * @param styleNo
     * @param styleColor
     * @return
     */
    int delFullCodeDetailList(String styleNo, String styleColor,String orderId);

    /**
     * 删除全码用量资料
     * @param styleNo
     * @param styleColor
     * @param list
     * @return
     */
    int delFullCodeDetail(String styleNo, String styleColor,String orderId, List<FullCodeRequest> list);

    /**
     * 新增
     * @param list
     * @return
     */
    int addFullCodeDetail(List<YfBomUsageNew2> list);

    /**
     * 型体颜色用量明细查询
     * @param request
     * @return
     */
    List<YfBomPartNew2Dto> getUsageDetailsQuery(UsageDetailsQueryRequest request);

    /**
     * 查询全码用量资料
     * @param request
     * @return
     */
    List<YfBomUsageNew2> getFullCodeDetailRenewList(FullCodeRenewGetRequest request);

    /**
     * 查询用量变更记录
     * @param request
     * @return
     */
    List<YfBomChangeDto> getUsageDetailsChangeQuery(UsageDetailsQueryChangeRequest request);

    /**
     * 查询型体
     * @param request
     * @return
     */
    List<String> getStyleQuery(UsageDetailsQueryChangeRequest request);

    /**
     * 查询型体颜色
     * @param request
     * @return
     */
    List<StyleToPhotoDto> getStyleToColorQuery(UsageDetailsQueryChangeRequest request);

    /**
     * 查询复制型体列表
     * @param request
     * @return
     */
    List<CopyingDosageListDto> getCopyingDosageList(CopyingDosageQueryRequest request);

    /**
     * 查询型体冲刀号
     * @param currentStyleNo
     * @return
     */
    List<String> getTypeSize(String currentStyleNo);

    /**
     * 更新复制
     * @param styleNo
     * @param styleColor
     * @param partName
     * @param segment
     * @param usage
     * @return
     */
    int updateCopyingDosage(String styleNo, String styleColor,String orderId, String partName, String segment, BigDecimal usage);

    /**
     * 查询型体颜色
     * @param styleNo
     * @return
     */
    List<YfStyleColorDetail> getStyleColorDetail(String styleNo);

    /**
     * 更新颜色编码
     * @param styleNo
     * @param styleColor
     * @param colorCode
     * @return
     */
    int updateBomColorCode(String styleNo, String styleColor, String colorCode,String orderId);

    /**
     * 更新基本码
     * @param baseSize
     * @param styleNo
     * @param styleColor
     * @return
     */
    int updateBaseSize(String baseSize, String styleNo, String styleColor,String orderId);

    /**
     * 插入用量明细
     * @param yfBomPartNew2
     * @return
     */
    int addStyleUsageDetail2(YfBomPartNew2 yfBomPartNew2);

    /**
     * 更新用量明细
     * @param yfBomPartNew2
     * @return
     */
    int UpdateStyleUsageDetailBySegment(YfBomPartNew2 yfBomPartNew2);

    /**
     * 查询分段
     * @param styleNo
     * @param styleColor
     * @param partName
     * @return
     */
    List<String> getPositionSegment(String styleNo, String styleColor, String partName,String orderId);

    /**
     * 查询型体颜色是否已存在
     * @param styleNo
     * @param styleColor
     * @return
     */
    YfStyleColorDetail getStyleToColorQuery2(String styleNo, String styleColor);

    /**
     * 查询样品数据
     * @param styleNo
     * @param styleColor
     * @return
     */
    PcOrderHead getOrderHead(String styleNo, String styleColor,String orderId);

    /**
     * 根据id查询订单信息
     * @param orderId
     * @return
     */
    PcOrderHead getOrderHead2(String orderId);

    /**
     * 根据型体颜色查询返回订单信息
     * @param request
     * @return
     */
    List<StyleToPhotoDto> getStyleQueryByOrderId(UsageDetailsQueryChangeRequest request);

}
